﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyVoteMVC.Web.Extensions
{
    /// <summary>
    /// 实体互转换接口
    /// </summary>
    /// <typeparam name="TEntity"></typeparam>
    /// <typeparam name="TModel"></typeparam>
    public interface IModelConverter<TEntity, TModel>
        where TEntity : class
        where TModel : class
    {
        /// <summary>
        /// 将TEntity转换成TModel
        /// 只对对象进行向下转换 对父节点不处理。
        /// </summary>
        /// <param name="entity"></param>
        /// <returns></returns>
        TModel Convert(TEntity entity);

        /// <summary>
        /// 需要传入需要更新的domain对象，只更新对象本身的属性，
        /// 不对主键、外键和外键关联的属性进行处理。
        /// </summary>
        /// <param name="model"></param>
        /// <param name="entityToUpdated"></param>
        void ReverseConvert(TModel model,TEntity entityToUpdated);
    }
}
